Portable personal computers (PCs) were first introduced in the early 1980s and have since enjoyed great commercial success and consumer acceptance. As the portable PC market has grown, users have begun to demand lighter weight, lower volume PCs that can be used for longer periods of time between battery charges. Meeting these demands has proved challenging in view of the fact that most portable PCs now support peripheral devices previously available only on desktop PCs. The additional peripherals greatly increase overall power consumption, making it difficult to achieve an optimal level of functionality while maintaining an acceptable battery life. Furthermore, although for reasons other than maximizing battery life, it has become desirable to more efficiently manage power consumption of desktop PCs in order to minimize overall operating costs.
Initially, such power management was accomplished using proprietary software drivers developed by PC manufacturers that monitored system activity with respect to hardware, firmware and operating system(s). Although fairly effective, the use of such drivers introduced additional problems, such as creating incompatibilities with user's applications, due to the fact that the drivers typically were not effective at detecting every operating system and application installed on the portable PC. Partially in response to these problems, in 1990, Intel introduced its Intel386.TM. SL CPU, which was the first standard microprocessor designed to support power management that was operating system-independent. Specifically, the Intel386 SL CPU was the first to implement a System Management Mode (SMM) that enabled the implementation of advanced power management features without jeopardizing operating system or application integrity.
Although initially developed by Intel, some form of SMM is now available from most manufacturers of '386 and subsequent microprocessors. The core features of such SMMs are basically the same, in that all include a nonmaskable hardware interrupt, specifically, a system management interrupt, for invoking a mode-independent software routine in a separate SMM address space. Power management is the obvious application for SMM; however, other functions supported by SMMs include network drivers, device drivers, file translation software, data security and supervision.
Programs running in SMM execute independently of the processor mode and the operating system in a dedicated SMM memory space. This liberates system and power management functionality from dependence on the operating system and allows flexibility and differentiation in the rest of the system logic. SMM code executes from a protected space, which may vary in size from several kilobytes to several gigabytes, depending on the particular implementation and capabilities of the computer. SMM is initiated by a system management interrupt which saves the state of the CPU and then causes the CPU to jump directly to SMM code in SMM space. All PC memory and I/O space is accessible from SMM.
One of the principal benefits of SMM is that it provides a secure memory location for status and control code; however, the price of this security is an often extremely high overhead in terms of processing resources required to save the state of the CPU before entering SMM. In some platform designs, extended applications program interfaces (APIs), such as Advanced Power Management (APM), Plug and Play (PnP) and other machine dependent programs, need to run with maximum efficiency with respect to part of their functionality, but with maximum security with respect to other parts. Typically, this problem is solved by sacrificing efficiency for security and executing the entire extended API in the SMM.
Therefore, what is needed is a method of executing extended API software in a more efficient manner, but without a significant reduction in security where necessary.